Web application programs are typically run at servers at the behest of clients communicatively connected to the servers over a network, such as the Internet. In general, a client requests via a web page that a web application program be run. While the application programs runs on one or more servers, input may be made at the client, and output is typically displayed at the client.
Having the application programs running completely on the servers is workable only if the servers are able to keep up with the processing load of multiple clients. In many cases this is not the case. Furthermore, the clients themselves may have considerable processing power, especially where the clients are typical desktop or laptop computers with modern processors. Therefore, the situation can occur where a server is straining under the load of having to execute a web application program, while the processing power of a client remains unused.
However, having an application program perform some of its logic at the client instead of at the server is not easily achieved, especially with existing web application programs. A client may not be able to accommodate the programming languages in which a web application program is written. Furthermore, while developing a program to run just on a server is relatively straightforward, developing a program to distributively run on both a server and a client is much more difficult. Even if achievable, however, existing web application programs intended to run just on servers then have to be redeveloped, with significant effort, to distributively run on both clients and servers.
For these and other reasons, therefore, there is a need for the present invention.